/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package controle;

import java.io.Serializable;
import java.util.AbstractList;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import javax.annotation.PostConstruct;
import javax.ejb.EJB;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.context.FacesContext;
import javax.faces.event.ActionEvent;
import modelo.Curso;
import modelo.Disciplina;
import modelo.Questao;
import modelo.Questionario;
import modelo.Setor;
import modelo.Turma;
import persistencia.CursoFacade;
import persistencia.DisciplinaFacade;
import persistencia.QuestaoFacade;
import persistencia.QuestionarioFacade;
import persistencia.SetorFacade;
import persistencia.TurmaFacade;
import util.QuestaoModel;

/**
 *
 * @author jeferson
 */
@ManagedBean
@SessionScoped
public class MbCadastroQuestionarios implements Serializable {

    private Questao questaoSelecionada;
    private QuestaoModel questaoModel;
    
    private String centro;
    private Setor centroS;
    private String disciplina;
    private String docente;
    private String professor;
    private List<String> centros;
    private List<String> disciplinas;
    private List<String> professores;
    private List<Questao> listaQuestoes;
    private String curso;
    private List<String> cursos;
    private Questao[] selectedQuestao;
//    private List<Questao> selectedQuestao;
    
    @EJB
    private DisciplinaFacade ejbDisciplinaFacade;
    @EJB
    private QuestaoFacade ejbQuestaoFacade;
    @EJB
    private SetorFacade ejbSetorFacede;
    @EJB
    private TurmaFacade ejbTurmaFacede;
    @EJB
    private CursoFacade ejbCursoFacede;
    @EJB
    private QuestionarioFacade ejbQuestionarioFacade;

    @PostConstruct
    public void init() {

        //transforma a lista de centros em String
        listaQuestoes = ejbQuestaoFacade.findAll();
        List<Setor> listaSetor = ejbSetorFacede.findAll();
        
        centros = new ArrayList<String>();
        for (Setor setor : listaSetor) {
            centros.add(setor.getStrCodigo());
        }
        questaoModel = new QuestaoModel(listaQuestoes);
    }

    /*
     * esse metodo atualiza a lista de diciplina
     * de acordo com o centro selecionado, porém
     * o centro esta é uma string e a lista de disciplina 
     * é uma string
     */
    public void atualizarDisciplina() {
        System.out.println(""+centro);
           
        disciplinas = new ArrayList<String>();
        List<Disciplina> listaDisciplina = ejbDisciplinaFacade.findAll();

        for (Disciplina temp : listaDisciplina) {
            if (centro.compareTo(temp.getStrCodigo().getStrCodigo()) == 0) {
                disciplinas.add(temp.getDscDescricao());
            }
        }
    }
    
    public void limparCurso(){
        cursos = new ArrayList<String>();
    }
    
    public void atualizarCurso(){
        System.out.println("disciplina selecionada: "+disciplina);
        
        cursos = new ArrayList<String>();
        List<Turma> listaTurmas = ejbDisciplinaFacade.carregarTurmas(disciplina);
        String cursoAux;
        
        for(int i = 0; i < listaTurmas.size(); i++){
            List<Curso> listCurso = ejbTurmaFacede.carregarCurso(listaTurmas.get(i));
            
            for(int j = 0; j < listCurso.size(); j++){
                cursoAux = listCurso.get(j).getCrsDesricao();
                cursos.add(cursoAux);
                System.out.println(""+cursoAux);
            }
        }
    }
    
    public void cadastrarQuestionario(){
        Questionario questionario = new Questionario();
        questionario.setAtivo(false);
        questionario.setDatacriacao(new Date(System.currentTimeMillis()));
        questionario.setDatapublicacao(null);
        questionario.setQuestionarioHasQuestaoList(null);
        questionario.setTurma(null);
        
        ejbQuestionarioFacade.create(questionario);
    }
   
    public void salvar(ActionEvent actionEvent) {
        cadastrarQuestionario();
        FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_INFO, "salvar", "Questionario cadastrado com sucesso.");
        FacesContext.getCurrentInstance().addMessage(null, message);
    }

    public String cancelar() {
        return "cadastroQuestionarios.xhtml";
    }

    public String getDisciplina() {
        return disciplina;
    }

    public void setDisciplina(String disciplina) {
        this.disciplina = disciplina;
    }

    public Questao getQuestaoSelecionada() {
        return questaoSelecionada;
    }

//    public List<Questao> getSelectedQuestao() {
//        return selectedQuestao;
//    }
    public Questao[] getSelectedQuestao() {
        return selectedQuestao;
    }

//    public void setSelectedQuestao(List<Questao> selectedQuestao) {
//        this.selectedQuestao = selectedQuestao;
//    }
    public void setSelectedQuestao(Questao[] selectedQuestao) {
        this.selectedQuestao = selectedQuestao;
    }

    public void setQuestaoSelecionada(Questao questao) {
        this.questaoSelecionada = questao;
    }

    public List<Questao> getListaQuestoes() {
        if (listaQuestoes == null) {
            listaQuestoes = new ArrayList<Questao>();
        }
        return listaQuestoes;
    }

    public QuestaoModel getQuestaoModel() {
        return questaoModel;
    }

    public void setQuestaoModel(QuestaoModel questaoModel) {
        this.questaoModel = questaoModel;
    }

    public List<Setor> getListaSetor() {
        return ejbSetorFacede.findAll();
    }

    public String getCentro() {
        return centro;
    }

    public void setCentro(String centro) {
        this.centro = centro;
    }

    public void setCentros(ArrayList<String> centros) {
        this.centros = centros;
    }
    
    public ArrayList<String> getCentros(){
        return (ArrayList<String>) this.centros;
    }

    public ArrayList<String> getDisciplinas() {
        return (ArrayList<String>)this.disciplinas;
    }

    public void setDisciplinas(ArrayList<String> disciplinas) {
        this.disciplinas = disciplinas;
    }
    
    public String getDocente() {
        return docente;
    }

    public void setDocente(String docente) {
        this.docente = docente;
    }

    public Setor getCentroS() {
        return centroS;
    }

    public void setCentroS(Setor centroS) {
        this.centro = centroS.getStrCodigo();
    }

    public String getProfessor() {
        return professor;
    }

    public void setProfessor(String professor) {
        this.professor = professor;
    }

    public List<String> getProfessores() {
        return professores;
    }

    public void setProfessores(List<String> professores) {
        this.professores = professores;
    }

    public String getCurso() {
        return curso;
    }

    public void setCurso(String curso) {
        this.curso = curso;
    }

    public ArrayList<String> getCursos() {
        return (ArrayList<String>)cursos;
    }

    public void setCursos(ArrayList<String> cursos) {
        if(cursos == null){
            cursos = new ArrayList<String>();
        }
        this.cursos = cursos;
    }
}
